home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / dkong.c < prev    next >
C/C++ Source or Header  |  2000-04-23  |  58KB  |  1,690 lines

  1. /***************************************************************************
  2.  
  3. TODO:
  4. - Radarscope does a check on bit 6 of 7d00 which prevent it from working.
  5.   It's a sound status flag, maybe signaling whan a tune is finished.
  6.   For now, we comment it out.
  7.  
  8. - radarscp_grid_color_w() is wrong, it probably isn't supposed to change
  9.   the grid color. There are reports of the grid being constantly blue in
  10.   the real game, the flyer confirms this.
  11.  
  12.  
  13. Donkey Kong and Donkey Kong Jr. memory map (preliminary) (DKong 3 follows)
  14.  
  15. 0000-3fff ROM (Donkey Kong Jr.and Donkey Kong 3: 0000-5fff)
  16. 6000-6fff RAM
  17. 6900-6a7f sprites
  18. 7000-73ff ?
  19. 7400-77ff Video RAM
  20. 8000-9fff ROM (DK3 only)
  21.  
  22.  
  23.  
  24. memory mapped ports:
  25.  
  26. read:
  27. 7c00      IN0
  28. 7c80      IN1
  29. 7d00      IN2 (DK3: DSW2)
  30. 7d80      DSW1
  31.  
  32. *
  33.  * IN0 (bits NOT inverted)
  34.  * bit 7 : ?
  35.  * bit 6 : reset (when player 1 active)
  36.  * bit 5 : ?
  37.  * bit 4 : JUMP player 1
  38.  * bit 3 : DOWN player 1
  39.  * bit 2 : UP player 1
  40.  * bit 1 : LEFT player 1
  41.  * bit 0 : RIGHT player 1
  42.  *
  43. *
  44.  * IN1 (bits NOT inverted)
  45.  * bit 7 : ?
  46.  * bit 6 : reset (when player 2 active)
  47.  * bit 5 : ?
  48.  * bit 4 : JUMP player 2
  49.  * bit 3 : DOWN player 2
  50.  * bit 2 : UP player 2
  51.  * bit 1 : LEFT player 2
  52.  * bit 0 : RIGHT player 2
  53.  *
  54. *
  55.  * IN2 (bits NOT inverted)
  56.  * bit 7 : COIN (IS inverted in Radarscope)
  57.  * bit 6 : ? Radarscope does some wizardry with this bit
  58.  * bit 5 : ?
  59.  * bit 4 : ?
  60.  * bit 3 : START 2
  61.  * bit 2 : START 1
  62.  * bit 1 : ?
  63.  * bit 0 : ? if this is 1, the code jumps to $4000, outside the rom space
  64.  *
  65. *
  66.  * DSW1 (bits NOT inverted)
  67.  * bit 7 : COCKTAIL or UPRIGHT cabinet (1 = UPRIGHT)
  68.  * bit 6 : \ 000 = 1 coin 1 play   001 = 2 coins 1 play  010 = 1 coin 2 plays
  69.  * bit 5 : | 011 = 3 coins 1 play  100 = 1 coin 3 plays  101 = 4 coins 1 play
  70.  * bit 4 : / 110 = 1 coin 4 plays  111 = 5 coins 1 play
  71.  * bit 3 : \bonus at
  72.  * bit 2 : / 00 = 7000  01 = 10000  10 = 15000  11 = 20000
  73.  * bit 1 : \ 00 = 3 lives  01 = 4 lives
  74.  * bit 0 : / 10 = 5 lives  11 = 6 lives
  75.  *
  76.  
  77. write:
  78. 7800-7803 ?
  79. 7808      ?
  80. 7c00      Background sound/music select:
  81.           00 - nothing
  82.           01 - Intro tune
  83.           02 - How High? (intermisson) tune
  84.           03 - Out of time
  85.           04 - Hammer
  86.           05 - Rivet level 2 completed (end tune)
  87.           06 - Hammer hit
  88.           07 - Standard level end
  89.           08 - Background 1    (first screen)
  90.           09 - ???
  91.           0A - Background 3    (springs)
  92.           0B - Background 2 (rivet)
  93.           0C - Rivet level 1 completed (end tune)
  94.           0D - Rivet removed
  95.           0E - Rivet level completed
  96.           0F - Gorilla roar
  97. 7c80      gfx bank select (Donkey Kong Jr. only)
  98. 7d00      digital sound trigger - walk
  99. 7d01      digital sound trigger - jump
  100. 7d02      digital sound trigger - boom (gorilla stomps foot)
  101. 7d03      digital sound trigger - coin input/spring
  102. 7d04      digital sound trigger    - gorilla fall
  103. 7d05      digital sound trigger - barrel jump/prize
  104. 7d06      ?
  105. 7d07      ?
  106. 7d80      digital sound trigger - dead
  107. 7d82      flip screen
  108. 7d83      ?
  109. 7d84      interrupt enable
  110. 7d85      0/1 toggle
  111. 7d86-7d87 palette bank selector (only bit 0 is significant: 7d86 = bit 0 7d87 = bit 1)
  112.  
  113.  
  114. 8035 Memory Map:
  115.  
  116. 0000-07ff ROM
  117. 0800-0fff Compressed sound sample (Gorilla roar in DKong)
  118.  
  119. Read ports:
  120. 0x20   Read current tune
  121. P2.5   Active low when jumping
  122. T0     Select sound for jump (Normal or Barrell?)
  123. T1     Active low when gorilla is falling
  124.  
  125. Write ports:
  126. P1     Digital out
  127. P2.7   External decay
  128. P2.6   Select second ROM reading (MOVX instruction will access area 800-fff)
  129. P2.2-0 Select the bank of 256 bytes for second ROM
  130.  
  131.  
  132.  
  133. Donkey Kong 3 memory map (preliminary):
  134.  
  135. RAM and read ports same as above;
  136.  
  137. write:
  138. 7d00      ?
  139. 7d80      ?
  140. 7e00      ?
  141. 7e80
  142. 7e81      char bank selector
  143. 7e82      flipscreen
  144. 7e83      ?
  145. 7e84      interrupt enable
  146. 7e85      ?
  147. 7e86-7e87 palette bank selector (only bit 0 is significant: 7e86 = bit 0 7e87 = bit 1)
  148.  
  149.  
  150. I/O ports
  151.  
  152. write:
  153. 00        ?
  154.  
  155. Changes:
  156.     Apr 7 98 Howie Cohen
  157.     * Added samples for the climb, jump, land and walking sounds
  158.  
  159.     Jul 27 99 Chad Hendrickson
  160.     * Added cocktail mode flipscreen
  161.  
  162. ***************************************************************************/
  163.  
  164. #include "driver.h"
  165. #include "vidhrdw/generic.h"
  166. #include "cpu/i8039/i8039.h"
  167. #include "cpu/s2650/s2650.h"
  168. #include "cpu/m6502/m6502.h"
  169.  
  170. static int page = 0,mcustatus;
  171. static int p[8] = { 255,255,255,255,255,255,255,255 };
  172. static int t[2] = { 1,1 };
  173.  
  174.  
  175. WRITE_HANDLER( radarscp_grid_enable_w );
  176. WRITE_HANDLER( radarscp_grid_color_w );
  177. WRITE_HANDLER( dkong_flipscreen_w );
  178. WRITE_HANDLER( dkongjr_gfxbank_w );
  179. WRITE_HANDLER( dkong3_gfxbank_w );
  180. WRITE_HANDLER( dkong_palettebank_w );
  181. void dkong_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  182. void dkong3_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  183. int dkong_vh_start(void);
  184. void radarscp_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  185. void dkong_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  186.  
  187. WRITE_HANDLER( dkong_sh_w );
  188. WRITE_HANDLER( dkongjr_sh_death_w );
  189. WRITE_HANDLER( dkongjr_sh_drop_w );
  190. WRITE_HANDLER( dkongjr_sh_roar_w );
  191. WRITE_HANDLER( dkongjr_sh_jump_w );
  192. WRITE_HANDLER( dkongjr_sh_walk_w );
  193. WRITE_HANDLER( dkongjr_sh_climb_w );
  194. WRITE_HANDLER( dkongjr_sh_land_w );
  195. WRITE_HANDLER( dkongjr_sh_snapjaw_w );
  196.  
  197. WRITE_HANDLER( dkong_sh1_w );
  198.  
  199. #define ACTIVELOW_PORT_BIT(P,A,D)   ((P & (~(1 << A))) | ((D ^ 1) << A))
  200.  
  201.  
  202. WRITE_HANDLER( dkong_sh_sound3_w )     { p[2] = ACTIVELOW_PORT_BIT(p[2],5,data); }
  203. WRITE_HANDLER( dkong_sh_sound4_w )    { t[1] = ~data & 1; }
  204. WRITE_HANDLER( dkong_sh_sound5_w )    { t[0] = ~data & 1; }
  205. WRITE_HANDLER( dkong_sh_tuneselect_w ) { soundlatch_w(offset,data ^ 0x0f); }
  206.  
  207. WRITE_HANDLER( dkongjr_sh_test6_w )      { p[2] = ACTIVELOW_PORT_BIT(p[2],6,data); }
  208. WRITE_HANDLER( dkongjr_sh_test5_w )      { p[2] = ACTIVELOW_PORT_BIT(p[2],5,data); }
  209. WRITE_HANDLER( dkongjr_sh_test4_w )      { p[2] = ACTIVELOW_PORT_BIT(p[2],4,data); }
  210. WRITE_HANDLER( dkongjr_sh_tuneselect_w ) { soundlatch_w(offset,data); }
  211.  
  212. READ_HANDLER( hunchbks_mirror_r );
  213. WRITE_HANDLER( hunchbks_mirror_w );
  214.  
  215. static READ_HANDLER( dkong_sh_p1_r )   { return p[1]; }
  216. static READ_HANDLER( dkong_sh_p2_r )   { return p[2]; }
  217. static READ_HANDLER( dkong_sh_t0_r )   { return t[0]; }
  218. static READ_HANDLER( dkong_sh_t1_r )   { return t[1]; }
  219. static READ_HANDLER( dkong_sh_tune_r )
  220. {
  221.     unsigned char *SND = memory_region(REGION_CPU2);
  222.     if (page & 0x40)
  223.     {
  224.         switch (offset)
  225.         {
  226.             case 0x20:  return soundlatch_r(0);
  227.         }
  228.     }
  229.     return (SND[2048+(page & 7)*256+offset]);
  230. }
  231.  
  232. #include <math.h>
  233.  
  234. static double envelope,tt;
  235. static int decay;
  236.  
  237. #define TSTEP 0.001
  238.  
  239. static WRITE_HANDLER( dkong_sh_p1_w )
  240. {
  241.     envelope=exp(-tt);
  242.     DAC_data_w(0,(int)(data*envelope));
  243.     if (decay) tt+=TSTEP;
  244.     else tt=0;
  245. }
  246.  
  247. static WRITE_HANDLER( dkong_sh_p2_w )
  248. {
  249.     /*   If P2.Bit7 -> is apparently an external signal decay or other output control
  250.      *   If P2.Bit6 -> activates the external compressed sample ROM
  251.      *   If P2.Bit4 -> status code to main cpu
  252.      *   P2.Bit2-0  -> select the 256 byte bank for external ROM
  253.      */
  254.  
  255.     decay = !(data & 0x80);
  256.     page = (data & 0x47);
  257.     mcustatus = ((~data & 0x10) >> 4);
  258. }
  259.  
  260.  
  261. static READ_HANDLER( dkong_in2_r )
  262. {
  263.     return input_port_2_r(offset) | (mcustatus << 6);
  264. }
  265.  
  266.  
  267. static struct MemoryReadAddress readmem[] =
  268. {
  269.     { 0x0000, 0x5fff, MRA_ROM },    /* DK: 0000-3fff */
  270.     { 0x6000, 0x6fff, MRA_RAM },    /* including sprites RAM */
  271.     { 0x7400, 0x77ff, MRA_RAM },    /* video RAM */
  272.     { 0x7c00, 0x7c00, input_port_0_r },    /* IN0 */
  273.     { 0x7c80, 0x7c80, input_port_1_r },    /* IN1 */
  274.     { 0x7d00, 0x7d00, dkong_in2_r },    /* IN2/DSW2 */
  275.     { 0x7d80, 0x7d80, input_port_3_r },    /* DSW1 */
  276.     { 0x8000, 0x9fff, MRA_ROM },    /* DK3 and bootleg DKjr only */
  277.     { -1 }    /* end of table */
  278. };
  279.  
  280. static struct MemoryReadAddress dkong3_readmem[] =
  281. {
  282.     { 0x0000, 0x5fff, MRA_ROM },    /* DK: 0000-3fff */
  283.     { 0x6000, 0x6fff, MRA_RAM },    /* including sprites RAM */
  284.     { 0x7400, 0x77ff, MRA_RAM },    /* video RAM */
  285.     { 0x7c00, 0x7c00, input_port_0_r },    /* IN0 */
  286.     { 0x7c80, 0x7c80, input_port_1_r },    /* IN1 */
  287.     { 0x7d00, 0x7d00, input_port_2_r },    /* IN2/DSW2 */
  288.     { 0x7d80, 0x7d80, input_port_3_r },    /* DSW1 */
  289.     { 0x8000, 0x9fff, MRA_ROM },    /* DK3 and bootleg DKjr only */
  290.     { -1 }    /* end of table */
  291. };
  292.  
  293. static struct MemoryWriteAddress radarscp_writemem[] =
  294. {
  295.     { 0x0000, 0x5fff, MWA_ROM },
  296.     { 0x6000, 0x68ff, MWA_RAM },
  297.     { 0x6900, 0x6a7f, MWA_RAM, &spriteram, &spriteram_size },
  298.     { 0x6a80, 0x6fff, MWA_RAM },
  299.     { 0x7000, 0x73ff, MWA_RAM },    /* ???? */
  300.     { 0x7400, 0x77ff, videoram_w, &videoram, &videoram_size },
  301.     { 0x7800, 0x7803, MWA_RAM },    /* ???? */
  302.     { 0x7808, 0x7808, MWA_RAM },    /* ???? */
  303.     { 0x7c00, 0x7c00, dkong_sh_tuneselect_w },
  304.     { 0x7c80, 0x7c80, radarscp_grid_color_w },
  305.     { 0x7d00, 0x7d02, dkong_sh1_w },    /* walk/jump/boom sample trigger */
  306.     { 0x7d03, 0x7d03, dkong_sh_sound3_w },
  307.     { 0x7d04, 0x7d04, dkong_sh_sound4_w },
  308.     { 0x7d05, 0x7d05, dkong_sh_sound5_w },
  309.     { 0x7d80, 0x7d80, dkong_sh_w },
  310.     { 0x7d81, 0x7d81, radarscp_grid_enable_w },
  311.     { 0x7d82, 0x7d82, dkong_flipscreen_w },
  312.     { 0x7d83, 0x7d83, MWA_RAM },
  313.     { 0x7d84, 0x7d84, interrupt_enable_w },
  314.     { 0x7d85, 0x7d85, MWA_RAM },
  315.     { 0x7d86, 0x7d87, dkong_palettebank_w },
  316.     { -1 }    /* end of table */
  317. };
  318.  
  319. static struct MemoryWriteAddress dkong_writemem[] =
  320. {
  321.     { 0x0000, 0x5fff, MWA_ROM },
  322.     { 0x6000, 0x68ff, MWA_RAM },
  323.     { 0x6900, 0x6a7f, MWA_RAM, &spriteram, &spriteram_size },
  324.     { 0x6a80, 0x6fff, MWA_RAM },
  325.     { 0x7000, 0x73ff, MWA_RAM },    /* ???? */
  326.     { 0x7400, 0x77ff, videoram_w, &videoram, &videoram_size },
  327.     { 0x7800, 0x7803, MWA_RAM },    /* ???? */
  328.     { 0x7808, 0x7808, MWA_RAM },    /* ???? */
  329.     { 0x7c00, 0x7c00, dkong_sh_tuneselect_w },
  330. //    { 0x7c80, 0x7c80,  },
  331.     { 0x7d00, 0x7d02, dkong_sh1_w },    /* walk/jump/boom sample trigger */
  332.     { 0x7d03, 0x7d03, dkong_sh_sound3_w },
  333.     { 0x7d04, 0x7d04, dkong_sh_sound4_w },
  334.     { 0x7d05, 0x7d05, dkong_sh_sound5_w },
  335.     { 0x7d80, 0x7d80, dkong_sh_w },
  336.     { 0x7d81, 0x7d81, MWA_RAM },    /* ???? */
  337.     { 0x7d82, 0x7d82, dkong_flipscreen_w },
  338.     { 0x7d83, 0x7d83, MWA_RAM },
  339.     { 0x7d84, 0x7d84, interrupt_enable_w },
  340.     { 0x7d85, 0x7d85, MWA_RAM },
  341.     { 0x7d86, 0x7d87, dkong_palettebank_w },
  342.     { -1 }    /* end of table */
  343. };
  344.  
  345. READ_HANDLER( herbiedk_iack_r )
  346. {
  347.     s2650_set_sense(1);
  348.     return 0;
  349. }
  350.  
  351. static struct MemoryReadAddress hunchbkd_readmem[] =
  352. {
  353.     { 0x0000, 0x0fff, MRA_ROM },
  354.     { 0x2000, 0x2fff, MRA_ROM },
  355.     { 0x4000, 0x4fff, MRA_ROM },
  356.     { 0x6000, 0x6fff, MRA_ROM },
  357.     { 0x1400, 0x1400, input_port_0_r },        /* IN0 */
  358.     { 0x1480, 0x1480, input_port_1_r },        /* IN1 */
  359.     { 0x1500, 0x1500, input_port_2_r },        /* IN2/DSW2 */
  360.     { 0x1507, 0x1507, herbiedk_iack_r },      /* Clear Int */
  361.     { 0x1580, 0x1580, input_port_3_r },        /* DSW1 */
  362.     { 0x1600, 0x1bff, MRA_RAM },            /* video RAM */
  363.     { 0x1c00, 0x1fff, MRA_RAM },
  364.     { 0x3000, 0x3fff, hunchbks_mirror_r },
  365.     { 0x5000, 0x5fff, hunchbks_mirror_r },
  366.     { 0x7000, 0x7fff, hunchbks_mirror_r },
  367.     { -1 }    /* end of table */
  368. };
  369.  
  370. static struct MemoryWriteAddress hunchbkd_writemem[] =
  371. {
  372.     { 0x0000, 0x0fff, MWA_ROM },
  373.     { 0x2000, 0x2fff, MWA_ROM },
  374.     { 0x4000, 0x4fff, MWA_ROM },
  375.     { 0x6000, 0x6fff, MWA_ROM },
  376.     { 0x1400, 0x1400, dkong_sh_tuneselect_w },
  377.     { 0x1480, 0x1480, dkongjr_gfxbank_w },
  378.     { 0x1580, 0x1580, dkong_sh_w },
  379.     { 0x1582, 0x1582, dkong_flipscreen_w },
  380.     { 0x1584, 0x1584, MWA_RAM },            /* Possibly still interupt enable */
  381.     { 0x1585, 0x1585, MWA_RAM },            /* written a lot - every int */
  382.     { 0x1586, 0x1587, dkong_palettebank_w },
  383.     { 0x1600, 0x17ff, MWA_RAM, &spriteram, &spriteram_size },
  384.     { 0x1800, 0x1bff, videoram_w, &videoram, &videoram_size },
  385.     { 0x1C00, 0x1fff, MWA_RAM },
  386.     { 0x3000, 0x3fff, hunchbks_mirror_w },
  387.     { 0x5000, 0x5fff, hunchbks_mirror_w },
  388.     { 0x7000, 0x7fff, hunchbks_mirror_w },
  389.     { -1 }  /* end of table */
  390. };
  391.  
  392. int hunchloopback;
  393.  
  394. WRITE_HANDLER( hunchbkd_data_w )
  395. {
  396.     hunchloopback=data;
  397. }
  398.  
  399. READ_HANDLER( hunchbkd_port0_r )
  400. {
  401.     logerror("port 0 : pc = %4x\n",s2650_get_pc());
  402.  
  403.     switch (s2650_get_pc())
  404.     {
  405.         case 0x00e9:  return 0xff;
  406.         case 0x0114:  return 0xfb;
  407.     }
  408.  
  409.     return 0;
  410. }
  411.  
  412. READ_HANDLER( hunchbkd_port1_r )
  413. {
  414.     return hunchloopback;
  415. }
  416.  
  417. READ_HANDLER( herbiedk_port1_r )
  418. {
  419.     switch (s2650_get_pc())
  420.     {
  421.         case 0x002b:
  422.         case 0x09dc:  return 0x0;
  423.     }
  424.  
  425.     return 1;
  426. }
  427.  
  428. static struct IOWritePort hunchbkd_writeport[] =
  429. {
  430.     { 0x101, 0x101, hunchbkd_data_w },
  431.     { -1 }    /* end of table */
  432. };
  433.  
  434. static struct IOReadPort hunchbkd_readport[] =
  435. {
  436.     { 0x00, 0x00, hunchbkd_port0_r },
  437.     { 0x01, 0x01, hunchbkd_port1_r },
  438.     { -1 }    /* end of table */
  439. };
  440.  
  441. static struct IOReadPort herbiedk_readport[] =
  442. {
  443.     { 0x01, 0x01, herbiedk_port1_r },
  444.     { -1 }    /* end of table */
  445. };
  446.  
  447. static struct MemoryReadAddress readmem_sound[] =
  448. {
  449.     { 0x0000, 0x0fff, MRA_ROM },
  450.     { -1 }    /* end of table */
  451. };
  452. static struct MemoryWriteAddress writemem_sound[] =
  453. {
  454.     { 0x0000, 0x0fff, MWA_ROM },
  455.     { -1 }    /* end of table */
  456. };
  457. static struct IOReadPort readport_sound[] =
  458. {
  459.     { 0x00,     0xff,     dkong_sh_tune_r },
  460.     { I8039_p1, I8039_p1, dkong_sh_p1_r },
  461.     { I8039_p2, I8039_p2, dkong_sh_p2_r },
  462.     { I8039_t0, I8039_t0, dkong_sh_t0_r },
  463.     { I8039_t1, I8039_t1, dkong_sh_t1_r },
  464.     { -1 }    /* end of table */
  465. };
  466. static struct IOWritePort writeport_sound[] =
  467. {
  468.     { I8039_p1, I8039_p1, dkong_sh_p1_w },
  469.     { I8039_p2, I8039_p2, dkong_sh_p2_w },
  470.     { -1 }    /* end of table */
  471. };
  472.  
  473. static struct IOReadPort readport_hunchbkd_sound[] =
  474. {
  475.     { I8039_bus,I8039_bus,soundlatch_r },
  476.     { I8039_p1, I8039_p1, dkong_sh_p1_r },
  477.     { I8039_p2, I8039_p2, dkong_sh_p2_r },
  478.     { I8039_t0, I8039_t0, dkong_sh_t0_r },
  479.     { I8039_t1, I8039_t1, dkong_sh_t1_r },
  480.     { -1 }    /* end of table */
  481. };
  482.  
  483. static struct MemoryWriteAddress dkongjr_writemem[] =
  484. {
  485.     { 0x0000, 0x5fff, MWA_ROM },
  486.     { 0x6000, 0x68ff, MWA_RAM },
  487.     { 0x6900, 0x6a7f, MWA_RAM, &spriteram, &spriteram_size },
  488.     { 0x6a80, 0x6fff, MWA_RAM },
  489.     { 0x7400, 0x77ff, videoram_w, &videoram, &videoram_size },
  490.     { 0x7800, 0x7803, MWA_RAM },    /* ???? */
  491.     { 0x7808, 0x7808, MWA_RAM },    /* ???? */
  492.     { 0x7c00, 0x7c00, dkongjr_sh_tuneselect_w },
  493.     { 0x7c80, 0x7c80, dkongjr_gfxbank_w },
  494.     { 0x7c81, 0x7c81, dkongjr_sh_test6_w },
  495.     { 0x7d00, 0x7d00, dkongjr_sh_climb_w }, /* HC - climb sound */
  496.     { 0x7d01, 0x7d01, dkongjr_sh_jump_w }, /* HC - jump */
  497.     { 0x7d02, 0x7d02, dkongjr_sh_land_w }, /* HC - climb sound */
  498.     { 0x7d03, 0x7d03, dkongjr_sh_roar_w },
  499.     { 0x7d04, 0x7d04, dkong_sh_sound4_w },
  500.     { 0x7d05, 0x7d05, dkong_sh_sound5_w },
  501.     { 0x7d06, 0x7d06, dkongjr_sh_snapjaw_w },
  502.     { 0x7d07, 0x7d07, dkongjr_sh_walk_w },    /* controls pitch of the walk/climb? */
  503.     { 0x7d80, 0x7d80, dkongjr_sh_death_w },
  504.     { 0x7d81, 0x7d81, dkongjr_sh_drop_w },   /* active when Junior is falling */{ 0x7d84, 0x7d84, interrupt_enable_w },
  505.     { 0x7d82, 0x7d82, dkong_flipscreen_w },
  506.     { 0x7d86, 0x7d87, dkong_palettebank_w },
  507.     { 0x8000, 0x9fff, MWA_ROM },    /* bootleg DKjr only */
  508.     { -1 }    /* end of table */
  509. };
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517. WRITE_HANDLER( dkong3_2a03_reset_w )
  518. {
  519.     if (data & 1)
  520.     {
  521.         cpu_set_reset_line(1,CLEAR_LINE);
  522.         cpu_set_reset_line(2,CLEAR_LINE);
  523.     }
  524.     else
  525.     {
  526.         cpu_set_reset_line(1,ASSERT_LINE);
  527.         cpu_set_reset_line(2,ASSERT_LINE);
  528.     }
  529. }
  530.  
  531. static struct MemoryWriteAddress dkong3_writemem[] =
  532. {
  533.     { 0x0000, 0x5fff, MWA_ROM },
  534.     { 0x6000, 0x68ff, MWA_RAM },
  535.     { 0x6900, 0x6a7f, MWA_RAM, &spriteram, &spriteram_size },
  536.     { 0x6a80, 0x6fff, MWA_RAM },
  537.     { 0x7400, 0x77ff, videoram_w, &videoram, &videoram_size },
  538.     { 0x7c00, 0x7c00, soundlatch_w },
  539.     { 0x7c80, 0x7c80, soundlatch2_w },
  540.     { 0x7d00, 0x7d00, soundlatch3_w },
  541.     { 0x7d80, 0x7d80, dkong3_2a03_reset_w },
  542.     { 0x7e81, 0x7e81, dkong3_gfxbank_w },
  543.     { 0x7e82, 0x7e82, dkong_flipscreen_w },
  544.     { 0x7e84, 0x7e84, interrupt_enable_w },
  545.     { 0x7e85, 0x7e85, MWA_NOP },    /* ??? */
  546.     { 0x7e86, 0x7e87, dkong_palettebank_w },
  547.     { 0x8000, 0x9fff, MWA_ROM },
  548.     { -1 }    /* end of table */
  549. };
  550.  
  551. static struct IOWritePort dkong3_writeport[] =
  552. {
  553.     { 0x00, 0x00, IOWP_NOP },    /* ??? */
  554.     { -1 }    /* end of table */
  555. };
  556.  
  557. static struct MemoryReadAddress dkong3_sound1_readmem[] =
  558. {
  559.     { 0x0000, 0x01ff, MRA_RAM },
  560.     { 0x4016, 0x4016, soundlatch_r },
  561.     { 0x4017, 0x4017, soundlatch2_r },
  562.     { 0x4000, 0x4017, NESPSG_0_r },
  563.     { 0xe000, 0xffff, MRA_ROM },
  564.     { -1 }    /* end of table */
  565. };
  566.  
  567. static struct MemoryWriteAddress dkong3_sound1_writemem[] =
  568. {
  569.     { 0x0000, 0x01ff, MWA_RAM },
  570.     { 0x4000, 0x4017, NESPSG_0_w },
  571.     { 0xe000, 0xffff, MWA_ROM },
  572.     { -1 }    /* end of table */
  573. };
  574.  
  575. static struct MemoryReadAddress dkong3_sound2_readmem[] =
  576. {
  577.     { 0x0000, 0x01ff, MRA_RAM },
  578.     { 0x4016, 0x4016, soundlatch3_r },
  579.     { 0x4000, 0x4017, NESPSG_1_r },
  580.     { 0xe000, 0xffff, MRA_ROM },
  581.     { -1 }    /* end of table */
  582. };
  583.  
  584. static struct MemoryWriteAddress dkong3_sound2_writemem[] =
  585. {
  586.     { 0x0000, 0x01ff, MWA_RAM },
  587.     { 0x4000, 0x4017, NESPSG_1_w },
  588.     { 0xe000, 0xffff, MWA_ROM },
  589.     { -1 }    /* end of table */
  590. };
  591.  
  592.  
  593.  
  594. INPUT_PORTS_START( dkong )
  595.     PORT_START      /* IN0 */
  596.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  597.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  598.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  599.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  600.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  601.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  602.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  603.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  604.  
  605.     PORT_START      /* IN1 */
  606.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  607.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  608.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  609.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  610.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  611.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  612.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  613.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  614.  
  615.     PORT_START      /* IN2 */
  616.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  617. //    PORT_DIPNAME( 0x01, 0x00, DEF_STR( Service_Mode ) )
  618. //    PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  619. //    PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  620.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  621.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  622.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  623.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  624.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  625.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* status from sound cpu */
  626.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  627.  
  628.     PORT_START      /* DSW0 */
  629.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  630.     PORT_DIPSETTING(    0x00, "3" )
  631.     PORT_DIPSETTING(    0x01, "4" )
  632.     PORT_DIPSETTING(    0x02, "5" )
  633.     PORT_DIPSETTING(    0x03, "6" )
  634.     PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
  635.     PORT_DIPSETTING(    0x00, "7000" )
  636.     PORT_DIPSETTING(    0x04, "10000" )
  637.     PORT_DIPSETTING(    0x08, "15000" )
  638.     PORT_DIPSETTING(    0x0c, "20000" )
  639.     PORT_DIPNAME( 0x70, 0x00, DEF_STR( Coinage ) )
  640.     PORT_DIPSETTING(    0x70, DEF_STR( 5C_1C ) )
  641.     PORT_DIPSETTING(    0x50, DEF_STR( 4C_1C ) )
  642.     PORT_DIPSETTING(    0x30, DEF_STR( 3C_1C ) )
  643.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  644.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  645.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  646.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
  647.     PORT_DIPSETTING(    0x60, DEF_STR( 1C_4C ) )
  648.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
  649.     PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
  650.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  651. INPUT_PORTS_END
  652.  
  653.  
  654. INPUT_PORTS_START( dkong3 )
  655.     PORT_START      /* IN0 */
  656.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  657.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  658.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  659.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  660.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  661.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
  662.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
  663.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN3 )
  664.  
  665.  
  666.     PORT_START      /* IN1 */
  667.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  668.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  669.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  670.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  671.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  672.     PORT_BIT_IMPULSE( 0x20, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
  673.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_HIGH, IPT_COIN2, 1 )
  674.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  675.  
  676.     PORT_START      /* DSW0 */
  677.     PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) )
  678.     PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
  679.     PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
  680.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  681.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
  682.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
  683.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
  684.     PORT_DIPSETTING(    0x05, DEF_STR( 1C_5C ) )
  685.     PORT_DIPSETTING(    0x07, DEF_STR( 1C_6C ) )
  686.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  687.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  688.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  689.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  690.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  691.     PORT_DIPSETTING(    0x10, DEF_STR( On ) )
  692.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  693.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  694.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  695.     PORT_BITX(0x40, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  696.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
  697.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  698.     PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
  699.  
  700.     PORT_START      /* DSW1 */
  701.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  702.     PORT_DIPSETTING(    0x00, "3" )
  703.     PORT_DIPSETTING(    0x01, "4" )
  704.     PORT_DIPSETTING(    0x02, "5" )
  705.     PORT_DIPSETTING(    0x03, "6" )
  706.     PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
  707.     PORT_DIPSETTING(    0x00, "30000" )
  708.     PORT_DIPSETTING(    0x04, "40000" )
  709.     PORT_DIPSETTING(    0x08, "50000" )
  710.     PORT_DIPSETTING(    0x0c, "None" )
  711.     PORT_DIPNAME( 0x30, 0x00, "Additional Bonus" )
  712.     PORT_DIPSETTING(    0x00, "30000" )
  713.     PORT_DIPSETTING(    0x10, "40000" )
  714.     PORT_DIPSETTING(    0x20, "50000" )
  715.     PORT_DIPSETTING(    0x30, "None" )
  716.     PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )
  717.     PORT_DIPSETTING(    0x00, "Easy" )
  718.     PORT_DIPSETTING(    0x40, "Medium" )
  719.     PORT_DIPSETTING(    0x80, "Hard" )
  720.     PORT_DIPSETTING(    0xc0, "Hardest" )
  721. INPUT_PORTS_END
  722.  
  723.  
  724. INPUT_PORTS_START( hunchbdk )
  725.     PORT_START      /* IN0 */
  726.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  727.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  728.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  729.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  730.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  731.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  732.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  733.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  734.  
  735.     PORT_START      /* IN1 */
  736.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  737.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  738.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  739.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  740.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  741.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  742.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  743.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  744.  
  745.     PORT_START      /* IN2 */
  746.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  747.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  748.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  749.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  750.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  751.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  752.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  753.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  754.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* status from sound cpu */
  755.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  756.  
  757.     PORT_START      /* DSW0 */
  758.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  759.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  760.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  761.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Lives ) )
  762.     PORT_DIPSETTING(    0x00, "3" )
  763.     PORT_DIPSETTING(    0x02, "5" )
  764.     PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
  765.     PORT_DIPSETTING(    0x00, "10000" )
  766.     PORT_DIPSETTING(    0x04, "20000" )
  767.     PORT_DIPSETTING(    0x08, "40000" )
  768.     PORT_DIPSETTING(    0x0c, "80000" )
  769.     PORT_DIPNAME( 0x70, 0x00, DEF_STR( Coinage ) )
  770.     PORT_DIPSETTING(    0x70, DEF_STR( 5C_1C ) )
  771.     PORT_DIPSETTING(    0x50, DEF_STR( 4C_1C ) )
  772.     PORT_DIPSETTING(    0x30, DEF_STR( 3C_1C ) )
  773.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  774.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  775.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  776.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
  777.     PORT_DIPSETTING(    0x60, DEF_STR( 1C_4C ) )
  778.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
  779.     PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
  780.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  781. INPUT_PORTS_END
  782.  
  783. INPUT_PORTS_START( herbiedk )
  784.     PORT_START      /* IN0 */
  785.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  786.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  787.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  788.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  789.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  790.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  791.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  792.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  793.  
  794.     PORT_START      /* IN1 */
  795.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  796.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  797.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  798.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  799.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  800.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  801.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  802.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  803.  
  804.     PORT_START      /* IN2 */
  805.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  806.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  807.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  808.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  809.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  810.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  811.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  812.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  813.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* status from sound cpu */
  814.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  815.  
  816.     PORT_START      /* DSW0 */
  817.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  818.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  819.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  820.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  821.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  822.     PORT_DIPSETTING(    0x02, DEF_STR( On ) )
  823.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  824.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  825.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  826.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  827.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  828.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  829.     PORT_DIPNAME( 0x70, 0x00, DEF_STR( Coinage ) )
  830.     PORT_DIPSETTING(    0x70, DEF_STR( 5C_1C ) )
  831.     PORT_DIPSETTING(    0x50, DEF_STR( 4C_1C ) )
  832.     PORT_DIPSETTING(    0x30, DEF_STR( 3C_1C ) )
  833.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  834.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  835.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  836.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
  837.     PORT_DIPSETTING(    0x60, DEF_STR( 1C_4C ) )
  838.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
  839.     PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
  840.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  841. INPUT_PORTS_END
  842.  
  843.  
  844. static struct GfxLayout dkong_charlayout =
  845. {
  846.     8,8,    /* 8*8 characters */
  847.     256,    /* 256 characters */
  848.     2,    /* 2 bits per pixel */
  849.     { 256*8*8, 0 },    /* the two bitplanes are separated */
  850.     { 0, 1, 2, 3, 4, 5, 6, 7 },    /* pretty straightforward layout */
  851.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  852.     8*8    /* every char takes 8 consecutive bytes */
  853. };
  854. static struct GfxLayout dkongjr_charlayout =
  855. {
  856.     8,8,    /* 8*8 characters */
  857.     512,    /* 512 characters */
  858.     2,    /* 2 bits per pixel */
  859.     { 512*8*8, 0 },    /* the two bitplanes are separated */
  860.     { 0, 1, 2, 3, 4, 5, 6, 7 },    /* pretty straightforward layout */
  861.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  862.     8*8    /* every char takes 8 consecutive bytes */
  863. };
  864. static struct GfxLayout dkong_spritelayout =
  865. {
  866.     16,16,    /* 16*16 sprites */
  867.     128,    /* 128 sprites */
  868.     2,    /* 2 bits per pixel */
  869.     { 128*16*16, 0 },    /* the two bitplanes are separated */
  870.     { 0, 1, 2, 3, 4, 5, 6, 7,    /* the two halves of the sprite are separated */
  871.             64*16*16+0, 64*16*16+1, 64*16*16+2, 64*16*16+3, 64*16*16+4, 64*16*16+5, 64*16*16+6, 64*16*16+7 },
  872.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  873.             8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
  874.     16*8    /* every sprite takes 16 consecutive bytes */
  875. };
  876. static struct GfxLayout dkong3_spritelayout =
  877. {
  878.     16,16,    /* 16*16 sprites */
  879.     256,    /* 256 sprites */
  880.     2,    /* 2 bits per pixel */
  881.     { 256*16*16, 0 },    /* the two bitplanes are separated */
  882.     { 0, 1, 2, 3, 4, 5, 6, 7,    /* the two halves of the sprite are separated */
  883.             128*16*16+0, 128*16*16+1, 128*16*16+2, 128*16*16+3, 128*16*16+4, 128*16*16+5, 128*16*16+6, 128*16*16+7 },
  884.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  885.             8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
  886.     16*8    /* every sprite takes 16 consecutive bytes */
  887. };
  888.  
  889.  
  890.  
  891. static struct GfxDecodeInfo dkong_gfxdecodeinfo[] =
  892. {
  893.     { REGION_GFX1, 0x0000, &dkong_charlayout,   0, 64 },
  894.     { REGION_GFX2, 0x0000, &dkong_spritelayout, 0, 64 },
  895.     { -1 } /* end of array */
  896. };
  897. static struct GfxDecodeInfo dkongjr_gfxdecodeinfo[] =
  898. {
  899.     { REGION_GFX1, 0x0000, &dkongjr_charlayout, 0, 64 },
  900.     { REGION_GFX2, 0x0000, &dkong_spritelayout, 0, 64 },
  901.     { -1 } /* end of array */
  902. };
  903. static struct GfxDecodeInfo dkong3_gfxdecodeinfo[] =
  904. {
  905.     { REGION_GFX1, 0x0000, &dkongjr_charlayout,   0, 64 },
  906.     { REGION_GFX2, 0x0000, &dkong3_spritelayout,  0, 64 },
  907.     { -1 } /* end of array */
  908. };
  909.  
  910.  
  911. static struct DACinterface dkong_dac_interface =
  912. {
  913.     1,
  914.     { 55 }
  915. };
  916.  
  917. static const char *dkong_sample_names[] =
  918. {
  919.     "*dkong",
  920.     "effect00.wav",
  921.     "effect01.wav",
  922.     "effect02.wav",
  923.     0    /* end of array */
  924. };
  925.  
  926. static const char *dkongjr_sample_names[] =
  927. {
  928.     "*dkongjr",
  929.     "jump.wav",
  930.     "land.wav",
  931.     "roar.wav",
  932.     "climb.wav",   /* HC */
  933.     "death.wav",  /* HC */
  934.     "drop.wav",  /* HC */
  935.     "walk.wav", /* HC */
  936.     "snapjaw.wav",  /* HC */
  937.     0    /* end of array */
  938. };
  939.  
  940. static struct Samplesinterface dkong_samples_interface =
  941. {
  942.     8,    /* 8 channels */
  943.     25,    /* volume */
  944.     dkong_sample_names
  945. };
  946.  
  947. static struct Samplesinterface dkongjr_samples_interface =
  948. {
  949.     8,    /* 8 channels */
  950.     25,    /* volume */
  951.     dkongjr_sample_names
  952. };
  953.  
  954. static struct MachineDriver machine_driver_radarscp =
  955. {
  956.     /* basic machine hardware */
  957.     {
  958.         {
  959.             CPU_Z80,
  960.             3072000,    /* 3.072 Mhz (?) */
  961.             readmem,radarscp_writemem,0,0,
  962.             nmi_interrupt,1
  963.         },
  964.         {
  965.             CPU_I8035 | CPU_AUDIO_CPU,
  966.             6000000/15,    /* 6Mhz crystal */
  967.             readmem_sound,writemem_sound,readport_sound,writeport_sound,
  968.             ignore_interrupt,1
  969.         }
  970.     },
  971.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  972.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  973.     0,
  974.  
  975.     /* video hardware */
  976.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  977.     dkong_gfxdecodeinfo,
  978.     256+2, 64*4,    /* two extra colors for stars and radar grid */
  979.     dkong_vh_convert_color_prom,
  980.  
  981.     VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
  982.     0,
  983.     dkong_vh_start,
  984.     generic_vh_stop,
  985.     radarscp_vh_screenrefresh,
  986.  
  987.     /* sound hardware */
  988.     0,0,0,0,
  989.     {
  990.         {
  991.             SOUND_DAC,
  992.             &dkong_dac_interface
  993.         },
  994.         {
  995.             SOUND_SAMPLES,
  996.             &dkong_samples_interface
  997.         }
  998.     }
  999. };
  1000.  
  1001. static struct MachineDriver machine_driver_dkong =
  1002. {
  1003.     /* basic machine hardware */
  1004.     {
  1005.         {
  1006.             CPU_Z80,
  1007.             3072000,    /* 3.072 Mhz (?) */
  1008.             readmem,dkong_writemem,0,0,
  1009.             nmi_interrupt,1
  1010.         },
  1011.         {
  1012.             CPU_I8035 | CPU_AUDIO_CPU,
  1013.             6000000/15,    /* 6Mhz crystal */
  1014.             readmem_sound,writemem_sound,readport_sound,writeport_sound,
  1015.             ignore_interrupt,1
  1016.         }
  1017.     },
  1018.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1019.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1020.     0,
  1021.  
  1022.     /* video hardware */
  1023.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1024.     dkong_gfxdecodeinfo,
  1025.     256, 64*4,
  1026.     dkong_vh_convert_color_prom,
  1027.  
  1028.     VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
  1029.     0,
  1030.     dkong_vh_start,
  1031.     generic_vh_stop,
  1032.     dkong_vh_screenrefresh,
  1033.  
  1034.     /* sound hardware */
  1035.     0,0,0,0,
  1036.     {
  1037.         {
  1038.             SOUND_DAC,
  1039.             &dkong_dac_interface
  1040.         },
  1041.         {
  1042.             SOUND_SAMPLES,
  1043.             &dkong_samples_interface
  1044.         }
  1045.     }
  1046. };
  1047.  
  1048. static int hunchbkd_interrupt(void)
  1049. {
  1050.     return 0x03;    /* hunchbkd S2650 interrupt vector */
  1051. }
  1052.  
  1053. static struct MachineDriver machine_driver_hunchbkd =
  1054. {
  1055.     /* basic machine hardware */
  1056.     {
  1057.         {
  1058.             CPU_S2650,
  1059.             3072000,
  1060.             hunchbkd_readmem,hunchbkd_writemem,hunchbkd_readport,hunchbkd_writeport,
  1061.             hunchbkd_interrupt,1
  1062.         },
  1063.         {
  1064.             CPU_I8035 | CPU_AUDIO_CPU,
  1065.             6000000/15,    /* 6Mhz crystal */
  1066.             readmem_sound,writemem_sound,readport_hunchbkd_sound,writeport_sound,
  1067.             ignore_interrupt,1
  1068.         }
  1069.     },
  1070.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1071.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1072.     0,
  1073.  
  1074.     /* video hardware */
  1075.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1076.     dkong_gfxdecodeinfo,
  1077.     256, 64*4,
  1078.     dkong_vh_convert_color_prom,
  1079.  
  1080.     VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
  1081.     0,
  1082.     dkong_vh_start,
  1083.     generic_vh_stop,
  1084.     dkong_vh_screenrefresh,
  1085.  
  1086.     /* sound hardware */
  1087.     0,0,0,0,
  1088.     {
  1089.         {
  1090.             SOUND_DAC,
  1091.             &dkong_dac_interface
  1092.         }
  1093.     }
  1094. };
  1095.  
  1096. int herbiedk_interrupt(void)
  1097. {
  1098.     s2650_set_sense(0);
  1099.     return ignore_interrupt();
  1100. }
  1101.  
  1102. static struct MachineDriver machine_driver_herbiedk =
  1103. {
  1104.     /* basic machine hardware */
  1105.     {
  1106.         {
  1107.             CPU_S2650,
  1108.             3072000,
  1109.             hunchbkd_readmem,hunchbkd_writemem,herbiedk_readport,hunchbkd_writeport,
  1110.             herbiedk_interrupt,1
  1111.         },
  1112.         {
  1113.             CPU_I8035 | CPU_AUDIO_CPU,
  1114.             6000000/15,    /* 6Mhz crystal */
  1115.             readmem_sound,writemem_sound,readport_hunchbkd_sound,writeport_sound,
  1116.             ignore_interrupt,1
  1117.         }
  1118.     },
  1119.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1120.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1121.     0,
  1122.  
  1123.     /* video hardware */
  1124.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1125.     dkong_gfxdecodeinfo,
  1126.     256, 64*4,
  1127.     dkong_vh_convert_color_prom,
  1128.  
  1129.     VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
  1130.     0,
  1131.     dkong_vh_start,
  1132.     generic_vh_stop,
  1133.     dkong_vh_screenrefresh,
  1134.  
  1135.     /* sound hardware */
  1136.     0,0,0,0,
  1137.     {
  1138.         {
  1139.             SOUND_DAC,
  1140.             &dkong_dac_interface
  1141.         }
  1142.     }
  1143. };
  1144.  
  1145. static struct MachineDriver machine_driver_dkongjr =
  1146. {
  1147.     /* basic machine hardware */
  1148.     {
  1149.         {
  1150.             CPU_Z80,
  1151.             3072000,    /* 3.072 Mhz (?) */
  1152.             readmem,dkongjr_writemem,0,0,
  1153.             nmi_interrupt,1
  1154.         },
  1155.         {
  1156.             CPU_I8035 | CPU_AUDIO_CPU,
  1157.             6000000/15,    /* 6Mhz crystal */
  1158.             readmem_sound,writemem_sound,readport_sound,writeport_sound,
  1159.             ignore_interrupt,1
  1160.         }
  1161.     },
  1162.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1163.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1164.     0,
  1165.  
  1166.     /* video hardware */
  1167.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1168.     dkongjr_gfxdecodeinfo,
  1169.     256, 64*4,
  1170.     dkong_vh_convert_color_prom,
  1171.  
  1172.     VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
  1173.     0,
  1174.     dkong_vh_start,
  1175.     generic_vh_stop,
  1176.     dkong_vh_screenrefresh,
  1177.  
  1178.     /* sound hardware */
  1179.     0,0,0,0,
  1180.     {
  1181.         {
  1182.             SOUND_DAC,
  1183.             &dkong_dac_interface
  1184.         },
  1185.         {
  1186.             SOUND_SAMPLES,
  1187.             &dkongjr_samples_interface
  1188.         }
  1189.     }
  1190. };
  1191.  
  1192.  
  1193.  
  1194. static struct NESinterface nes_interface =
  1195. {
  1196.     2,
  1197.     { REGION_CPU2, REGION_CPU3 },
  1198.     { 50, 50 },
  1199. };
  1200.  
  1201.  
  1202. static struct MachineDriver machine_driver_dkong3 =
  1203. {
  1204.     /* basic machine hardware */
  1205.     {
  1206.         {
  1207.             CPU_Z80,
  1208.             8000000/2,    /* 4 Mhz */
  1209.             dkong3_readmem,dkong3_writemem,0,dkong3_writeport,
  1210.             nmi_interrupt,1
  1211.         },
  1212.         {
  1213.             CPU_N2A03 | CPU_AUDIO_CPU,
  1214.             N2A03_DEFAULTCLOCK,
  1215.             dkong3_sound1_readmem,dkong3_sound1_writemem,0,0,
  1216.             nmi_interrupt,1
  1217.         },
  1218.         {
  1219.             CPU_N2A03 | CPU_AUDIO_CPU,
  1220.             N2A03_DEFAULTCLOCK,
  1221.             dkong3_sound2_readmem,dkong3_sound2_writemem,0,0,
  1222.             nmi_interrupt,1
  1223.         }
  1224.     },
  1225.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1226.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1227.     0,
  1228.  
  1229.     /* video hardware */
  1230.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1231.     dkong3_gfxdecodeinfo,
  1232.     256, 64*4,
  1233.     dkong3_vh_convert_color_prom,
  1234.  
  1235.     VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
  1236.     0,
  1237.     dkong_vh_start,
  1238.     generic_vh_stop,
  1239.     dkong_vh_screenrefresh,
  1240.  
  1241.     /* sound hardware */
  1242.     0,0,0,0,
  1243.     {
  1244.         {
  1245.             SOUND_NES,
  1246.             &nes_interface
  1247.         }
  1248.     }
  1249. };
  1250.  
  1251.  
  1252.  
  1253. /***************************************************************************
  1254.  
  1255.   Game driver(s)
  1256.  
  1257. ***************************************************************************/
  1258.  
  1259. ROM_START( radarscp )
  1260.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1261.     ROM_LOAD( "trs2c5fc",     0x0000, 0x1000, 0x40949e0d )
  1262.     ROM_LOAD( "trs2c5gc",     0x1000, 0x1000, 0xafa8c49f )
  1263.     ROM_LOAD( "trs2c5hc",     0x2000, 0x1000, 0x51b8263d )
  1264.     ROM_LOAD( "trs2c5kc",     0x3000, 0x1000, 0x1f0101f7 )
  1265.     /* space for diagnostic ROM */
  1266.  
  1267.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1268.     ROM_LOAD( "trs2s3i",      0x0000, 0x0800, 0x78034f14 )
  1269.     /* socket 3J is empty */
  1270.  
  1271.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1272.     ROM_LOAD( "trs2v3gc",     0x0000, 0x0800, 0xf095330e )
  1273.     ROM_LOAD( "trs2v3hc",     0x0800, 0x0800, 0x15a316f0 )
  1274.  
  1275.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1276.     ROM_LOAD( "trs2v3dc",     0x0000, 0x0800, 0xe0bb0db9 )
  1277.     ROM_LOAD( "trs2v3cc",     0x0800, 0x0800, 0x6c4e7dad )
  1278.     ROM_LOAD( "trs2v3bc",     0x1000, 0x0800, 0x6fdd63f1 )
  1279.     ROM_LOAD( "trs2v3ac",     0x1800, 0x0800, 0xbbf62755 )
  1280.  
  1281.     ROM_REGION( 0x0800, REGION_GFX3 )    /* radar/star timing table */
  1282.     ROM_LOAD( "trs2v3ec",     0x0000, 0x0800, 0x0eca8d6b )
  1283.  
  1284.     ROM_REGION( 0x0300, REGION_PROMS )
  1285.     ROM_LOAD( "rs2-x.xxx",    0x0000, 0x0100, 0x54609d61 ) /* palette low 4 bits (inverted) */
  1286.     ROM_LOAD( "rs2-c.xxx",    0x0100, 0x0100, 0x79a7d831 ) /* palette high 4 bits (inverted) */
  1287.     ROM_LOAD( "rs2-v.1hc",    0x0200, 0x0100, 0x1b828315 ) /* character color codes on a per-column basis */
  1288. ROM_END
  1289.  
  1290. ROM_START( dkong )
  1291.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1292.     ROM_LOAD( "dk.5e",        0x0000, 0x1000, 0xba70b88b )
  1293.     ROM_LOAD( "dk.5c",        0x1000, 0x1000, 0x5ec461ec )
  1294.     ROM_LOAD( "dk.5b",        0x2000, 0x1000, 0x1c97d324 )
  1295.     ROM_LOAD( "dk.5a",        0x3000, 0x1000, 0xb9005ac0 )
  1296.     /* space for diagnostic ROM */
  1297.  
  1298.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1299.     ROM_LOAD( "dk.3h",        0x0000, 0x0800, 0x45a4ed06 )
  1300.     ROM_LOAD( "dk.3f",        0x0800, 0x0800, 0x4743fe92 )
  1301.  
  1302.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1303.     ROM_LOAD( "dk.3n",        0x0000, 0x0800, 0x12c8c95d )
  1304.     ROM_LOAD( "dk.3p",        0x0800, 0x0800, 0x15e9c5e9 )
  1305.  
  1306.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1307.     ROM_LOAD( "dk.7c",        0x0000, 0x0800, 0x59f8054d )
  1308.     ROM_LOAD( "dk.7d",        0x0800, 0x0800, 0x672e4714 )
  1309.     ROM_LOAD( "dk.7e",        0x1000, 0x0800, 0xfeaa59ee )
  1310.     ROM_LOAD( "dk.7f",        0x1800, 0x0800, 0x20f2ef7e )
  1311.  
  1312.     ROM_REGION( 0x0300, REGION_PROMS )
  1313.     ROM_LOAD( "dkong.2k",     0x0000, 0x0100, 0x1e82d375 ) /* palette low 4 bits (inverted) */
  1314.     ROM_LOAD( "dkong.2j",     0x0100, 0x0100, 0x2ab01dc8 ) /* palette high 4 bits (inverted) */
  1315.     ROM_LOAD( "dkong.5f",     0x0200, 0x0100, 0x44988665 ) /* character color codes on a per-column basis */
  1316. ROM_END
  1317.  
  1318. ROM_START( dkongjp )
  1319.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1320.     ROM_LOAD( "5f.cpu",       0x0000, 0x1000, 0x424f2b11 )
  1321.     ROM_LOAD( "5g.cpu",       0x1000, 0x1000, 0xd326599b )
  1322.     ROM_LOAD( "5h.cpu",       0x2000, 0x1000, 0xff31ac89 )
  1323.     ROM_LOAD( "5k.cpu",       0x3000, 0x1000, 0x394d6007 )
  1324.  
  1325.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1326.     ROM_LOAD( "dk.3h",        0x0000, 0x0800, 0x45a4ed06 )
  1327.     ROM_LOAD( "dk.3f",        0x0800, 0x0800, 0x4743fe92 )
  1328.  
  1329.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1330.     ROM_LOAD( "dk.3n",        0x0000, 0x0800, 0x12c8c95d )
  1331.     ROM_LOAD( "5k.vid",       0x0800, 0x0800, 0x3684f914 )
  1332.  
  1333.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1334.     ROM_LOAD( "dk.7c",        0x0000, 0x0800, 0x59f8054d )
  1335.     ROM_LOAD( "dk.7d",        0x0800, 0x0800, 0x672e4714 )
  1336.     ROM_LOAD( "dk.7e",        0x1000, 0x0800, 0xfeaa59ee )
  1337.     ROM_LOAD( "dk.7f",        0x1800, 0x0800, 0x20f2ef7e )
  1338.  
  1339.     ROM_REGION( 0x0300, REGION_PROMS )
  1340.     ROM_LOAD( "dkong.2k",     0x0000, 0x0100, 0x1e82d375 ) /* palette low 4 bits (inverted) */
  1341.     ROM_LOAD( "dkong.2j",     0x0100, 0x0100, 0x2ab01dc8 ) /* palette high 4 bits (inverted) */
  1342.     ROM_LOAD( "dkong.5f",     0x0200, 0x0100, 0x44988665 ) /* character color codes on a per-column basis */
  1343. ROM_END
  1344.  
  1345. ROM_START( dkongjpo )
  1346.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1347.     ROM_LOAD( "5f.cpu",       0x0000, 0x1000, 0x424f2b11 )
  1348.     ROM_LOAD( "5g.cpu",       0x1000, 0x1000, 0xd326599b )
  1349.     ROM_LOAD( "5h.bin",       0x2000, 0x1000, 0x1d28895d )
  1350.     ROM_LOAD( "5k.bin",       0x3000, 0x1000, 0x7961599c )
  1351.  
  1352.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1353.     ROM_LOAD( "dk.3h",        0x0000, 0x0800, 0x45a4ed06 )
  1354.     ROM_LOAD( "dk.3f",        0x0800, 0x0800, 0x4743fe92 )
  1355.  
  1356.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1357.     ROM_LOAD( "dk.3n",        0x0000, 0x0800, 0x12c8c95d )
  1358.     ROM_LOAD( "5k.vid",       0x0800, 0x0800, 0x3684f914 )
  1359.  
  1360.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1361.     ROM_LOAD( "dk.7c",        0x0000, 0x0800, 0x59f8054d )
  1362.     ROM_LOAD( "dk.7d",        0x0800, 0x0800, 0x672e4714 )
  1363.     ROM_LOAD( "dk.7e",        0x1000, 0x0800, 0xfeaa59ee )
  1364.     ROM_LOAD( "dk.7f",        0x1800, 0x0800, 0x20f2ef7e )
  1365.  
  1366.     ROM_REGION( 0x0300, REGION_PROMS )
  1367.     ROM_LOAD( "dkong.2k",     0x0000, 0x0100, 0x1e82d375 ) /* palette low 4 bits (inverted) */
  1368.     ROM_LOAD( "dkong.2j",     0x0100, 0x0100, 0x2ab01dc8 ) /* palette high 4 bits (inverted) */
  1369.     ROM_LOAD( "dkong.5f",     0x0200, 0x0100, 0x44988665 ) /* character color codes on a per-column basis */
  1370. ROM_END
  1371.  
  1372. ROM_START( dkongjr )
  1373.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1374.     ROM_LOAD( "dkj.5b",       0x0000, 0x1000, 0xdea28158 )
  1375.     ROM_CONTINUE(             0x3000, 0x1000 )
  1376.     ROM_LOAD( "dkj.5c",       0x2000, 0x0800, 0x6fb5faf6 )
  1377.     ROM_CONTINUE(             0x4800, 0x0800 )
  1378.     ROM_CONTINUE(             0x1000, 0x0800 )
  1379.     ROM_CONTINUE(             0x5800, 0x0800 )
  1380.     ROM_LOAD( "dkj.5e",       0x4000, 0x0800, 0xd042b6a8 )
  1381.     ROM_CONTINUE(             0x2800, 0x0800 )
  1382.     ROM_CONTINUE(             0x5000, 0x0800 )
  1383.     ROM_CONTINUE(             0x1800, 0x0800 )
  1384.  
  1385.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1386.     ROM_LOAD( "dkj.3h",       0x0000, 0x1000, 0x715da5f8 )
  1387.  
  1388.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1389.     ROM_LOAD( "dkj.3n",       0x0000, 0x1000, 0x8d51aca9 )
  1390.     ROM_LOAD( "dkj.3p",       0x1000, 0x1000, 0x4ef64ba5 )
  1391.  
  1392.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1393.     ROM_LOAD( "dkj.7c",       0x0000, 0x0800, 0xdc7f4164 )
  1394.     ROM_LOAD( "dkj.7d",       0x0800, 0x0800, 0x0ce7dcf6 )
  1395.     ROM_LOAD( "dkj.7e",       0x1000, 0x0800, 0x24d1ff17 )
  1396.     ROM_LOAD( "dkj.7f",       0x1800, 0x0800, 0x0f8c083f )
  1397.  
  1398.     ROM_REGION( 0x0300, REGION_PROMS )
  1399.     ROM_LOAD( "dkjrprom.2e",  0x0000, 0x0100, 0x463dc7ad )    /* palette low 4 bits (inverted) */
  1400.     ROM_LOAD( "dkjrprom.2f",  0x0100, 0x0100, 0x47ba0042 )    /* palette high 4 bits (inverted) */
  1401.     ROM_LOAD( "dkjrprom.2n",  0x0200, 0x0100, 0xdbf185bf )    /* character color codes on a per-column basis */
  1402. ROM_END
  1403.  
  1404. ROM_START( dkngjrjp )
  1405.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1406.     ROM_LOAD( "dkjr1",        0x0000, 0x1000, 0xec7e097f )
  1407.     ROM_CONTINUE(             0x3000, 0x1000 )
  1408.     ROM_LOAD( "dkjr2",        0x2000, 0x0800, 0xc0a18f0d )
  1409.     ROM_CONTINUE(             0x4800, 0x0800 )
  1410.     ROM_CONTINUE(             0x1000, 0x0800 )
  1411.     ROM_CONTINUE(             0x5800, 0x0800 )
  1412.     ROM_LOAD( "dkjr3",        0x4000, 0x0800, 0xa81dd00c )
  1413.     ROM_CONTINUE(             0x2800, 0x0800 )
  1414.     ROM_CONTINUE(             0x5000, 0x0800 )
  1415.     ROM_CONTINUE(             0x1800, 0x0800 )
  1416.  
  1417.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1418.     ROM_LOAD( "dkj.3h",       0x0000, 0x1000, 0x715da5f8 )
  1419.  
  1420.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1421.     ROM_LOAD( "dkjr9",        0x0000, 0x1000, 0xa95c4c63 )
  1422.     ROM_LOAD( "dkjr10",       0x1000, 0x1000, 0xadc11322 )
  1423.  
  1424.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1425.     ROM_LOAD( "dkj.7c",       0x0000, 0x0800, 0xdc7f4164 )
  1426.     ROM_LOAD( "dkj.7d",       0x0800, 0x0800, 0x0ce7dcf6 )
  1427.     ROM_LOAD( "dkj.7e",       0x1000, 0x0800, 0x24d1ff17 )
  1428.     ROM_LOAD( "dkj.7f",       0x1800, 0x0800, 0x0f8c083f )
  1429.  
  1430.     ROM_REGION( 0x0300, REGION_PROMS )
  1431.     ROM_LOAD( "dkjrprom.2e",  0x0000, 0x0100, 0x463dc7ad )    /* palette low 4 bits (inverted) */
  1432.     ROM_LOAD( "dkjrprom.2f",  0x0100, 0x0100, 0x47ba0042 )    /* palette high 4 bits (inverted) */
  1433.     ROM_LOAD( "dkjrprom.2n",  0x0200, 0x0100, 0xdbf185bf )    /* character color codes on a per-column basis */
  1434. ROM_END
  1435.  
  1436. ROM_START( dkjrjp )
  1437.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1438.     ROM_LOAD( "dkjp.5b",      0x0000, 0x1000, 0x7b48870b )
  1439.     ROM_CONTINUE(             0x3000, 0x1000 )
  1440.     ROM_LOAD( "dkjp.5c",      0x2000, 0x0800, 0x12391665 )
  1441.     ROM_CONTINUE(             0x4800, 0x0800 )
  1442.     ROM_CONTINUE(             0x1000, 0x0800 )
  1443.     ROM_CONTINUE(             0x5800, 0x0800 )
  1444.     ROM_LOAD( "dkjp.5e",      0x4000, 0x0800, 0x6c9f9103 )
  1445.     ROM_CONTINUE(             0x2800, 0x0800 )
  1446.     ROM_CONTINUE(             0x5000, 0x0800 )
  1447.     ROM_CONTINUE(             0x1800, 0x0800 )
  1448.  
  1449.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1450.     ROM_LOAD( "dkj.3h",       0x0000, 0x1000, 0x715da5f8 )
  1451.  
  1452.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1453.     ROM_LOAD( "dkj.3n",       0x0000, 0x1000, 0x8d51aca9 )
  1454.     ROM_LOAD( "dkj.3p",       0x1000, 0x1000, 0x4ef64ba5 )
  1455.  
  1456.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1457.     ROM_LOAD( "dkj.7c",       0x0000, 0x0800, 0xdc7f4164 )
  1458.     ROM_LOAD( "dkj.7d",       0x0800, 0x0800, 0x0ce7dcf6 )
  1459.     ROM_LOAD( "dkj.7e",       0x1000, 0x0800, 0x24d1ff17 )
  1460.     ROM_LOAD( "dkj.7f",       0x1800, 0x0800, 0x0f8c083f )
  1461.  
  1462.     ROM_REGION( 0x0300, REGION_PROMS )
  1463.     ROM_LOAD( "dkjrprom.2e",  0x0000, 0x0100, 0x463dc7ad )    /* palette low 4 bits (inverted) */
  1464.     ROM_LOAD( "dkjrprom.2f",  0x0100, 0x0100, 0x47ba0042 )    /* palette high 4 bits (inverted) */
  1465.     ROM_LOAD( "dkjrprom.2n",  0x0200, 0x0100, 0xdbf185bf )    /* character color codes on a per-column basis */
  1466. ROM_END
  1467.  
  1468. ROM_START( dkjrbl )
  1469.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1470.     ROM_LOAD( "djr1-c.5b",    0x0000, 0x1000, 0xffe9e1a5 )
  1471.     ROM_CONTINUE(             0x3000, 0x1000 )
  1472.     ROM_LOAD( "djr1-c.5c",    0x2000, 0x0800, 0x982e30e8 )
  1473.     ROM_CONTINUE(             0x4800, 0x0800 )
  1474.     ROM_CONTINUE(             0x1000, 0x0800 )
  1475.     ROM_CONTINUE(             0x5800, 0x0800 )
  1476.     ROM_LOAD( "djr1-c.5e",    0x4000, 0x0800, 0x24c3d325 )
  1477.     ROM_CONTINUE(             0x2800, 0x0800 )
  1478.     ROM_CONTINUE(             0x5000, 0x0800 )
  1479.     ROM_CONTINUE(             0x1800, 0x0800 )
  1480.     ROM_LOAD( "djr1-c.5a",    0x8000, 0x1000, 0xbb5f5180 )
  1481.  
  1482.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1483.     ROM_LOAD( "dkj.3h",       0x0000, 0x1000, 0x715da5f8 )
  1484.  
  1485.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1486.     ROM_LOAD( "dkj.3n",       0x0000, 0x1000, 0x8d51aca9 )
  1487.     ROM_LOAD( "dkj.3p",       0x1000, 0x1000, 0x4ef64ba5 )
  1488.  
  1489.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1490.     ROM_LOAD( "dkj.7c",       0x0000, 0x0800, 0xdc7f4164 )
  1491.     ROM_LOAD( "dkj.7d",       0x0800, 0x0800, 0x0ce7dcf6 )
  1492.     ROM_LOAD( "dkj.7e",       0x1000, 0x0800, 0x24d1ff17 )
  1493.     ROM_LOAD( "dkj.7f",       0x1800, 0x0800, 0x0f8c083f )
  1494.  
  1495.     ROM_REGION( 0x0300, REGION_PROMS )
  1496.     ROM_LOAD( "dkjrprom.2e",  0x0000, 0x0100, 0x463dc7ad )    /* palette low 4 bits (inverted) */
  1497.     ROM_LOAD( "dkjrprom.2f",  0x0100, 0x0100, 0x47ba0042 )    /* palette high 4 bits (inverted) */
  1498.     ROM_LOAD( "dkjrprom.2n",  0x0200, 0x0100, 0xdbf185bf )    /* character color codes on a per-column basis */
  1499. ROM_END
  1500.  
  1501. ROM_START( dkong3 )
  1502.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1503.     ROM_LOAD( "dk3c.7b",      0x0000, 0x2000, 0x38d5f38e )
  1504.     ROM_LOAD( "dk3c.7c",      0x2000, 0x2000, 0xc9134379 )
  1505.     ROM_LOAD( "dk3c.7d",      0x4000, 0x2000, 0xd22e2921 )
  1506.     ROM_LOAD( "dk3c.7e",      0x8000, 0x2000, 0x615f14b7 )
  1507.  
  1508.     ROM_REGION( 0x10000, REGION_CPU2 )    /* sound #1 */
  1509.     ROM_LOAD( "dk3c.5l",      0xe000, 0x2000, 0x7ff88885 )
  1510.  
  1511.     ROM_REGION( 0x10000, REGION_CPU3 )    /* sound #2 */
  1512.     ROM_LOAD( "dk3c.6h",      0xe000, 0x2000, 0x36d7200c )
  1513.  
  1514.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1515.     ROM_LOAD( "dk3v.3n",      0x0000, 0x1000, 0x415a99c7 )
  1516.     ROM_LOAD( "dk3v.3p",      0x1000, 0x1000, 0x25744ea0 )
  1517.  
  1518.     ROM_REGION( 0x4000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1519.     ROM_LOAD( "dk3v.7c",      0x0000, 0x1000, 0x8ffa1737 )
  1520.     ROM_LOAD( "dk3v.7d",      0x1000, 0x1000, 0x9ac84686 )
  1521.     ROM_LOAD( "dk3v.7e",      0x2000, 0x1000, 0x0c0af3fb )
  1522.     ROM_LOAD( "dk3v.7f",      0x3000, 0x1000, 0x55c58662 )
  1523.  
  1524.     ROM_REGION( 0x0300, REGION_PROMS )
  1525.     ROM_LOAD( "dkc1-c.1d",    0x0000, 0x0200, 0xdf54befc ) /* palette red & green component */
  1526.     ROM_LOAD( "dkc1-c.1c",    0x0100, 0x0200, 0x66a77f40 ) /* palette blue component */
  1527.     ROM_LOAD( "dkc1-v.2n",    0x0200, 0x0100, 0x50e33434 )    /* character color codes on a per-column basis */
  1528. ROM_END
  1529.  
  1530. ROM_START( dkong3j )
  1531.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1532.     ROM_LOAD( "dk3c.7b",      0x0000, 0x2000, 0x38d5f38e )
  1533.     ROM_LOAD( "dk3c.7c",      0x2000, 0x2000, 0xc9134379 )
  1534.     ROM_LOAD( "dk3c.7d",      0x4000, 0x2000, 0xd22e2921 )
  1535.     ROM_LOAD( "dk3cj.7e",     0x8000, 0x2000, 0x25b5be23 )
  1536.  
  1537.     ROM_REGION( 0x10000, REGION_CPU2 )    /* sound #1 */
  1538.     ROM_LOAD( "dk3c.5l",      0xe000, 0x2000, 0x7ff88885 )
  1539.  
  1540.     ROM_REGION( 0x10000, REGION_CPU3 )    /* sound #2 */
  1541.     ROM_LOAD( "dk3c.6h",      0xe000, 0x2000, 0x36d7200c )
  1542.  
  1543.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1544.     ROM_LOAD( "dk3v.3n",      0x0000, 0x1000, 0x415a99c7 )
  1545.     ROM_LOAD( "dk3v.3p",      0x1000, 0x1000, 0x25744ea0 )
  1546.  
  1547.     ROM_REGION( 0x4000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1548.     ROM_LOAD( "dk3v.7c",      0x0000, 0x1000, 0x8ffa1737 )
  1549.     ROM_LOAD( "dk3v.7d",      0x1000, 0x1000, 0x9ac84686 )
  1550.     ROM_LOAD( "dk3v.7e",      0x2000, 0x1000, 0x0c0af3fb )
  1551.     ROM_LOAD( "dk3v.7f",      0x3000, 0x1000, 0x55c58662 )
  1552.  
  1553.     ROM_REGION( 0x0300, REGION_PROMS )
  1554.     ROM_LOAD( "dkc1-c.1d",    0x0000, 0x0200, 0xdf54befc ) /* palette red & green component */
  1555.     ROM_LOAD( "dkc1-c.1c",    0x0100, 0x0200, 0x66a77f40 ) /* palette blue component */
  1556.     ROM_LOAD( "dkc1-v.2n",    0x0200, 0x0100, 0x50e33434 )    /* character color codes on a per-column basis */
  1557. ROM_END
  1558.  
  1559. ROM_START( hunchbkd )
  1560.     ROM_REGION( 0x8000, REGION_CPU1 )    /* 32k for code */
  1561.     ROM_LOAD( "hb.5e",        0x0000, 0x1000, 0x4c3ac070 )
  1562.     ROM_LOAD( "hbsc-1.5c",    0x2000, 0x1000, 0x9b0e6234 )
  1563.     ROM_LOAD( "hb.5b",        0x4000, 0x1000, 0x4cde80f3 )
  1564.     ROM_LOAD( "hb.5a",        0x6000, 0x1000, 0xd60ef5b2 )
  1565.  
  1566.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1567.     ROM_LOAD( "hb.3h",        0x0000, 0x0800, 0xa3c240d4 )
  1568.  
  1569.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1570.     ROM_LOAD( "hb.3n",        0x0000, 0x0800, 0x443ed5ac )
  1571.     ROM_LOAD( "hb.3p",        0x0800, 0x0800, 0x073e7b0c )
  1572.  
  1573.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1574.     ROM_LOAD( "hb.7c",        0x0000, 0x0800, 0x3ba71686 )
  1575.     ROM_LOAD( "hb.7d",        0x0800, 0x0800, 0x5786948d )
  1576.     ROM_LOAD( "hb.7e",        0x1000, 0x0800, 0xf845e8ca )
  1577.     ROM_LOAD( "hb.7f",        0x1800, 0x0800, 0x52d20fea )
  1578.  
  1579.     ROM_REGION( 0x0300, REGION_PROMS )
  1580.     ROM_LOAD( "hbprom.2e",    0x0000, 0x0100, 0x37aab98f )    /* palette low 4 bits (inverted) */
  1581.     ROM_LOAD( "hbprom.2f",    0x0100, 0x0100, 0x845b8dcc )    /* palette high 4 bits (inverted) */
  1582.     ROM_LOAD( "hbprom.2n",    0x0200, 0x0100, 0xdff9070a )    /* character color codes on a per-column basis */
  1583. ROM_END
  1584.  
  1585. ROM_START( herbiedk )
  1586.     ROM_REGION( 0x8000, REGION_CPU1 )    /* 32k for code */
  1587.     ROM_LOAD( "5f.cpu",        0x0000, 0x1000, 0xc7ab3ac6 )
  1588.     ROM_LOAD( "5g.cpu",        0x2000, 0x1000, 0xd1031aa6 )
  1589.     ROM_LOAD( "5h.cpu",        0x4000, 0x1000, 0xc0daf551 )
  1590.     ROM_LOAD( "5k.cpu",        0x6000, 0x1000, 0x67442242 )
  1591.  
  1592.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1593.     ROM_LOAD( "3i.snd",        0x0000, 0x0800, 0x20e30406 )
  1594.  
  1595.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1596.     ROM_LOAD( "5h.vid",        0x0000, 0x0800, 0xea2a2547 )
  1597.     ROM_LOAD( "5k.vid",        0x0800, 0x0800, 0xa8d421c9 )
  1598.  
  1599.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1600.     ROM_LOAD( "7c.clk",        0x0000, 0x0800, 0xaf646166 )
  1601.     ROM_LOAD( "7d.clk",        0x0800, 0x0800, 0xd8e15832 )
  1602.     ROM_LOAD( "7e.clk",        0x1000, 0x0800, 0x2f7e65fa )
  1603.     ROM_LOAD( "7f.clk",        0x1800, 0x0800, 0xad32d5ae )
  1604.  
  1605.     ROM_REGION( 0x0300, REGION_PROMS )
  1606.     ROM_LOAD( "74s287.2k",     0x0000, 0x0100, 0x7dc0a381 ) /* palette high 4 bits (inverted) */
  1607.     ROM_LOAD( "74s287.2j",     0x0100, 0x0100, 0x0a440c00 ) /* palette low 4 bits (inverted) */
  1608.     ROM_LOAD( "74s287.vid",    0x0200, 0x0100, 0x5a3446cc ) /* character color codes on a per-column basis */
  1609. ROM_END
  1610.  
  1611. ROM_START( herocast )
  1612.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  1613.     /* the loading addresses are most likely wrong */
  1614.     /* the ROMs are probably not contiguous. */
  1615.     /* For example there's a table which suddenly stops at */
  1616.     /* 1dff and resumes at 3e00 */
  1617.     ROM_LOAD( "red-dot.rgt",  0x0000, 0x2000, 0x9c4af229 )    /* encrypted */
  1618.     ROM_LOAD( "wht-dot.lft",  0x2000, 0x2000, 0xc10f9235 )    /* encrypted */
  1619.     /* space for diagnostic ROM */
  1620.     ROM_LOAD( "2532.3f",      0x4000, 0x1000, 0x553b89bb )    /* ??? contains unencrypted */
  1621.                                                     /* code mapped at 3000 */
  1622.  
  1623.     ROM_REGION( 0x1000, REGION_CPU2 )    /* sound */
  1624.     ROM_LOAD( "silver.3h",    0x0000, 0x0800, 0x67863ce9 )
  1625.  
  1626.     ROM_REGION( 0x1000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1627.     ROM_LOAD( "pnk.3n",       0x0000, 0x0800, 0x574dfd7a )
  1628.     ROM_LOAD( "blk.3p",       0x0800, 0x0800, 0x16f7c040 )
  1629.  
  1630.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  1631.     ROM_LOAD( "gold.7c",      0x0000, 0x0800, 0x5f5282ed )
  1632.     ROM_LOAD( "orange.7d",    0x0800, 0x0800, 0x075d99f5 )
  1633.     ROM_LOAD( "yellow.7e",    0x1000, 0x0800, 0xf6272e96 )
  1634.     ROM_LOAD( "violet.7f",    0x1800, 0x0800, 0xca020685 )
  1635.  
  1636.     ROM_REGION( 0x0300, REGION_PROMS )
  1637.     ROM_LOAD( "82s126.2e",    0x0000, 0x0100, 0x463dc7ad )    /* palette low 4 bits (inverted) */
  1638.     ROM_LOAD( "82s126.2f",    0x0100, 0x0100, 0x47ba0042 )    /* palette high 4 bits (inverted) */
  1639.     ROM_LOAD( "82s126.2n",    0x0200, 0x0100, 0x37aece4b )    /* character color codes on a per-column basis */
  1640. ROM_END
  1641.  
  1642.  
  1643.  
  1644. static void init_herocast(void)
  1645. {
  1646.     int A;
  1647.     unsigned char *RAM = memory_region(REGION_CPU1);
  1648.  
  1649.  
  1650.     /* swap data lines D3 and D4, this fixes the text but nothing more. */
  1651.     for (A = 0;A < 0x4000;A++)
  1652.     {
  1653.         int v;
  1654.  
  1655.         v = RAM[A];
  1656.         RAM[A] = (v & 0xe7) | ((v & 0x10) >> 1) | ((v & 0x08) << 1);
  1657.     }
  1658. }
  1659.  
  1660.  
  1661.  
  1662. static void init_radarscp(void)
  1663. {
  1664.     unsigned char *RAM = memory_region(REGION_CPU1);
  1665.  
  1666.  
  1667.     /* TODO: Radarscope does a check on bit 6 of 7d00 which prevent it from working. */
  1668.     /* It's a sound status flag, maybe signaling when a tune is finished. */
  1669.     /* For now, we comment it out. */
  1670.     RAM[0x1e9c] = 0xc3;
  1671.     RAM[0x1e9d] = 0xbd;
  1672. }
  1673.  
  1674.  
  1675.  
  1676. GAMEX(1980, radarscp, 0,       radarscp, dkong,    radarscp, ROT90, "Nintendo", "Radar Scope", GAME_IMPERFECT_SOUND )
  1677. GAME( 1981, dkong,    0,       dkong,    dkong,    0,        ROT90, "Nintendo of America", "Donkey Kong (US)" )
  1678. GAME( 1981, dkongjp,  dkong,   dkong,    dkong,    0,        ROT90, "Nintendo", "Donkey Kong (Japan set 1)" )
  1679. GAME( 1981, dkongjpo, dkong,   dkong,    dkong,    0,        ROT90, "Nintendo", "Donkey Kong (Japan set 2)" )
  1680. GAME( 1982, dkongjr,  0,       dkongjr,  dkong,    0,        ROT90, "Nintendo of America", "Donkey Kong Junior (US)" )
  1681. GAME( 1982, dkngjrjp, dkongjr, dkongjr,  dkong,    0,        ROT90, "bootleg?", "Donkey Kong Jr. (Original Japanese)" )
  1682. GAME( 1982, dkjrjp,   dkongjr, dkongjr,  dkong,    0,        ROT90, "Nintendo", "Donkey Kong Junior (Japan)" )
  1683. GAME( 1982, dkjrbl,   dkongjr, dkongjr,  dkong,    0,        ROT90, "Nintendo of America", "Donkey Kong Junior (bootleg?)" )
  1684. GAME( 1983, dkong3,   0,       dkong3,   dkong3,   0,        ROT90, "Nintendo of America", "Donkey Kong 3 (US)" )
  1685. GAME( 1983, dkong3j,  dkong3,  dkong3,   dkong3,   0,        ROT90, "Nintendo", "Donkey Kong 3 (Japan)" )
  1686.  
  1687. GAMEX(1983, hunchbkd, 0,       hunchbkd, hunchbdk, 0,        ROT90, "Century", "Hunchback (Donkey Kong conversion)", GAME_WRONG_COLORS )
  1688. GAMEX(1984, herbiedk, 0,       herbiedk, herbiedk, 0,        ROT90, "CVS", "Herbie at the Olympics (DK conversion)", GAME_WRONG_COLORS )    /*"Seatongrove UK Ltd"*/
  1689. GAMEX(1984, herocast, 0,       dkong,    dkong,    herocast, ROT90, "Seatongrove (Crown license)", "herocast", GAME_NOT_WORKING )
  1690.